import request from "@/utils/request";

const DIAGRAM_BASE_URL = "/bus/desDiagram";

class DesdiagramAPI {
  /** 新增图表接口*/
  static create(data: DesdiagramData) {
    return request({
      url: `${DIAGRAM_BASE_URL}/create`,
      method: "post",
      data: data,
    });
  }

  /** 修改图表接口*/
  static update(data: DesdiagramData) {
    return request({
      url: `${DIAGRAM_BASE_URL}/update`,
      method: "post",
      data: data,
    });
  }

  /**
   * 获取图表分页列表
   *
   * @param queryParams 查询参数
   */
  static getPage(queryParams: DesdiagramPageQuery) {
    return request<any, PageResult<DesdiagramPageVO[]>>({
      url: `${DIAGRAM_BASE_URL}/getDiagramPage`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 根据id获取图表信息
   *
   * @param id 图表ID
   */
  static getById(id: number) {
    return request<any, DesdiagramData>({
      url: `${DIAGRAM_BASE_URL}/getById?id=${id}`,
      method: "get",
    });
  }

  /**
   * 删除图表
   *
   * @param id 图表ID
   */
  static deleteById(id: number) {
    return request({
      url: `${DIAGRAM_BASE_URL}/delete?id=${id}`,
      method: "post",
    });
  }

  /**
   * 获取用户图表列表
   *
   */
  static getByCreator() {
    return request({
      url: `${DIAGRAM_BASE_URL}/getDiagramByCreator`,
      method: "get",
    })
  }

  /**
   * 获取自定义图表数据
   *
   * @param queryParams 查询参数
   */
  static getDiagramData(queryParams) {
    return request({
      url: `${DIAGRAM_BASE_URL}/getDiagramData`,
      method: "get",
      params: queryParams,
    });
  }
}

export default DesdiagramAPI;

/** 保存图表请求参数 */
export interface DesdiagramData {
  /** 主键id */
  id?: number;
  /** 图表名称 */
  modelName?: string;
  /** 元素集 */
  elements?: string;
  /** 图片 */
  img?: string;
}

/**
 * 图表分页查询对象
 */
 export interface DesdiagramPageQuery extends PageQuery {
  /** 搜索关键字 */
  modelName?: string;
}

/** 图表分页对象 */
export interface DesdiagramPageVO {
  /** 主键id */
  id?: number;
  /** 图表名称 */
  modelName?: string;
  /** 元素集 */
  elements?: string;
  /** 图片 */
  img?: string;
  /** 创建人 */
  creatorName?: string;
  /** 创建时间 */
  createTime?: Date;
}
